Crate truck_topology

source ·
Expand description

Topological structs: vertex, edge, wire, face, shell, and solid

Examples

The following sample code is a description of a topological tetrahedron as a solid model by this package.

use truck_topology::*;

// Create vertices. A tetrahedron has four vertices.
let v = Vertex::news(&[(), (), (), ()]);

// Create edges. Vertex is implemented the Copy trait.
let edge = [
    Edge::new(&v[0], &v[1], ()),
    Edge::new(&v[0], &v[2], ()),
    Edge::new(&v[0], &v[3], ()),
    Edge::new(&v[1], &v[2], ()),
    Edge::new(&v[1], &v[3], ()),
    Edge::new(&v[2], &v[3], ()),
];

// Create boundaries of faces as the wire.
// Edge is implemented the Copy trait.
let wire = vec![
    Wire::from_iter(vec![&edge[0], &edge[3], &edge[1].inverse()]),
    Wire::from_iter(vec![&edge[1], &edge[5], &edge[2].inverse()]),
    Wire::from_iter(vec![&edge[2], &edge[4].inverse(), &edge[0].inverse()]),
    Wire::from_iter(vec![&edge[3], &edge[5], &edge[4].inverse()]),
];

// Create faces by the boundary wires.
// The boundary of face must be simple and closed.
let mut face: Vec<Face<_, _, _>> = wire.into_iter().map(|wire| Face::new(vec![wire], ())).collect();
face[3].invert();

// Create shell of faces. Shell can be created by the Vec<Face>.
let shell: Shell<_, _, _> = face.into();

// Create a tetrahedron solid by the boundary shell.
// The boundaries of a solid must be closed and oriented.
let solid = Solid::new(vec![shell]);

Elements and containers

Main structures in truck_topology consist 4 topological elements and 2 topological containers.

topological elements

The following structures are topological elements.

Except Solid, each topological element has a unique id for each instance. In higher-level packages, by mapping this id to geometric information, you can draw a solid shape.

topological containers

The following structures are topological container.

The entities of Wire and Shell are std::collections::VecDeque<Edge> and std::vec::Vec<Face>, respectively, and many methods inherited by Deref and DerefMut. These containers are used for creating higher-dimentional topological elements and checked the regularity (e.g. connectivity, closedness, and so on) before creating these elements.

Modules

Serialized topological data exchange format
classifies the errors that can occur in this crate.
Defines the boundary iterator.
Display structs for debug or display topological elements
classifies shell conditions and defines the face iterators.
define the edge iterators and the vertex iterator.

Structs

Edge, which consists two vertices.
Face, attached to a simple and closed wire.
Shell, a connected compounded faces.
Solid, attached to a closed shells.
Vertex, the minimum topological unit.
Wire, a path or cycle which consists some edges.

Enums

Configuration for edge display format.
Configuration for face display format
Configuration for shell display format
Configuration for solid display format
configuration for vertex display format.
Configuration for wire display format.

Type Definitions

The id that does not depend on the direction of the edge.
The id that does not depend on the direction of the face.
Result with crate’s errors.
The id of vertex. Copy trait is implemented.